package 程序员面试金典;

public class 颜色填充 {

    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        dfs(image,sr,sc, image[sr][sc] ,newColor);
        return image;
    }

    private void dfs(int[][] image, int row, int col,int oldColor, int newColor) {
        // image[row][col]==newColor  这个条件是指当前位置已经访问过，不能再进行访问
        if (row<0 || row>=image.length || col<0 || col>=image[0].length || image[row][col]!=oldColor || image[row][col]==newColor)
            return;
        image[row][col]=newColor;
        //向左
        dfs(image, row+1, col,oldColor,newColor);
        //向右
        dfs(image, row-1, col, oldColor,newColor);
        //向上
        dfs(image, row, col-1,oldColor, newColor);
        //向下
        dfs(image, row, col+1, oldColor,newColor);
    }
}
